package com.eurasia.assignment.controller.dto;

import java.util.List;

import org.springframework.data.domain.Page;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 通用分页响应类
 * @param <T> 数据项类型
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PageResponse<T> {
    private List<T> content;        // 当前页数据
    private int page;               // 当前页码
    private int size;               // 每页数量
    private long totalElements;     // 总记录数
    private int totalPages;         // 总页数
    private boolean first;          // 是否为第一页
    private boolean last;           // 是否为最后一页
    
    /**
     * 从Spring Data的Page对象创建分页响应
     */
    public static <T> PageResponse<T> from(Page<T> page) {
        return PageResponse.<T>builder()
                .content(page.getContent())
                .page(page.getNumber())
                .size(page.getSize())
                .totalElements(page.getTotalElements())
                .totalPages(page.getTotalPages())
                .first(page.isFirst())
                .last(page.isLast())
                .build();
    }
} 